package xin.mydreams.mybill.util;

import org.apache.commons.lang3.StringUtils;
import org.springframework.data.domain.Page;

import java.lang.reflect.Array;
import java.util.Collection;
import java.util.List;
import java.util.Map;

public final class ObjectUtil {


    /**
     * 判断对象或对象数组中每一个对象是否为空 对象为null，字符序列长度为0，集合类、Map为empty
     *
     * @param obj
     *            对象
     * @return true or false
     */
    public static boolean isEmpty(Object obj) {
        boolean isEmpty = false;
        if (obj != null) {
            if (obj instanceof String) { // 字符串
                isEmpty = StringUtils.isEmpty(String.valueOf(obj));
            } else if (obj instanceof Map) { // map
                isEmpty = ((Map<?, ?>) obj).isEmpty();
            } else if (obj instanceof Collection) { // 集合
                isEmpty = ((Collection<?>) obj).isEmpty();
            } else if (obj instanceof Number) {// 数值
                isEmpty = obj.hashCode() == 0;
            } else if (obj.getClass().isArray()) {// 数组
                isEmpty = Array.getLength(obj) == 0;
            } else if(obj instanceof Page){
                List<?> content = ((Page<?>)obj).getContent();
                isEmpty=(content==null||content.size()==0);
            }
        } else {
            isEmpty = true;
        }
        return isEmpty;
    }

    public static boolean isNotEmpty(Object obj) {
        return !isEmpty(obj);
    }

}